import { isEmpty, deepClone } from "@/util/common"
/**
 * 定义基础的下拉加载选项配置
 * @object downBaseOption
 * @property {boolean} use - 是否启用上拉加载
 * @property {boolean} auto - 是否在初始化完毕之后自动执行一次上拉加载的回调
 */
export const downBaseOption = {
  use: true, // 是否启用上拉加载
  auto: true, // 是否在初始化完毕之后自动执行一次上拉加载的回调
}
/**
 * 定义基础的上拉加载选项配置
 * @object upBaseOption
 * @property {number} pageNo - 页面页码，默认为1
 * @property {string} errorText - 请求失败时的提示文字
 * @property {string} finishedText - 数据加载完毕时的提示文字
 * @property {number} pageSize - 每页数据量
 * @property {number} offset - 触发上拉加载的距离阈值
 * @property {boolean} isBackTop - 是否启用回到顶部功能
 */
export const upBaseOption = {
  pageNo: 1,
  pageSize: 10,
  errorText: '请求失败，点击重新加载',
  finishedText: '没有更多了...',
  offset: 50,
  isBackTop: true,
}
/**
 * 保存选项配置，将基础选项与用户自定义选项合并
 * @function saveOption
 * @param {object} val - 用户自定义配置对象
 * @param {object|string} option - 基础配置对象
 * @returns {object} 合并后的配置对象
 */
export const mergeOptions = (val, option= {}) => {
  if (isEmpty(val)) {
    val = {}
  }
  let newOption = option
  if (option === 'downOption') {
    newOption = downBaseOption
  }
  if (option === 'upOption') {
    newOption = upBaseOption
  }
  return Object.assign(deepClone(newOption), deepClone(val))
}
